One of the primary capabilities that has fueled the popularity of the Internet is the ability to share information and technology. What other technology could a professor in a remote village in China use to share his ability to program or create content with a student in Midland, Texas? Through the technology of the Internet and its ability to allow downloading of applications, resources, and information using client-server principles, these types of transactions take place millions of times every hour.
Many times, during the spawning of a new technology, in an effort to rush the deployment and acceptance of the new technology, the technological community may adopt a less sophisticated or inferior embodiment of a new technology. Such compromises are usually driven by the consumer or the desire to have a product to market before one's competitors. The adoption of inferior embodiments can result in creating artificial limitations on the technology-limitations based on format and compatibility issues rather than technology issues. The rapid growth and deployment of the world wide web, coupled with the introduction of increasingly sophisticated client formats, languages, types of content and platforms, has given rise to such a situation.
When the world is faced with an inferior embodiment of a new technology, over time, the problem usually is corrected. Two methods for correcting the problem include the deployment of a new or next generation technology, or the development of another technology to resolve or alleviate the problem. The present invention is directed towards this second method, while at the same time, providing a revolutionary technology that will expand the usability of the Internet.
One of the primary roles of the Internet is as a source of content. Due to the ease of a device being interfaced to the Internet, a vast array of different devices are connected to and interact over the Internet. Each of these devices may be a source of content to other devices through the Internet or, may attempt to access content from other devices through the Internet. Similar devices, or devices that store and utilize content in a similar format, can easily share content over the Internet. However, dissimilar devices, or devices that utilize different or even incompatible formats, cannot easily share content.
This information or content incompatibility problem is not unique to the Internet. This problem has also reared its head in other areas such as word processing, databases, or other applications that create and store files in a particular format. One technique that has been adopted is the use of conversion programs. A conversion program will read information in one format and convert it to a different format. For instance, Microsoft Word includes an embedded conversion program that will allow a Word Perfect document to be converted to Microsoft Word format. This type of conversion program is not a viable solution for the sharing of content over the Internet. One reason is that there is a large number of formats, and even new formats being introduced, for content on the Internet. The conversion program would be very complex, processor intensive, and large. In addition, when accessing content through the Internet, it may be difficult or impossible to know in what format the content is stored. For small, portable, and wireless devices that access content over the Internet, these characteristics render this technique useless. Thus, there is a need in the art to allow devices that require content in a particular format, to access content through the Internet, or any other local or global network, regardless of the format in which the content is stored.
One general format for content that is prolific on the Internet is markup languages. A markup language is a set of codes and/or characters that are interspersed with text and references to other content. The markup language directs the processing of an application that displays the content. Many different markup languages have been developed and content can be found on the Internet in any one of the variety of markup languages. However, the basic function of a markup language is to instruct an application with regards to how to display or render a particular item. For instance, the following line in Rich Text Format, a markup language used by many personal computer based applications,                {\b\f3\fs24\ul Melia Design Group—Creators of Nimbus\'99}        would result in causing a work processor to render the name “Melia Design Group—Creators of Nimbus™” as bolded (\b), 12 point (\fs24) courier font (f3), and underlined with one line (\ul):        
Melia Design Group—Creators of Nimbus™
The Standard Generalized Markup Language (SGML) is a descriptive markup language that basically provides a set of rules for creating other markup languages. Rather than instructing an application as to the particular aspects of a piece of text (i.e., hold, underlined, italicized) the SGML language describes a category for the text (i.e., title, level 2 beading, bulleted entry, etc.). The exact particulars of the SGML format can be found in the standard ISO 8879:1986. Several markup languages have been created through SGML, the most popular of which is the Hyper Text Markup Language (HTML) which was mainly created for use on the world wide web. SGML has also been used to create markup languages for a multitude of applications including word processors, parsers, and publishing, as well as other document formatting languages such as DHTML, XML, XHTML, GML and HDML.
The extensible Markup Language (XML) is an SGML markup language supported by the World Wide Web Consortium (W3C) and basically is a web-ready subset of SGML. As a subset of SGML, XML is more suitable for providing content to devices that are limited in memory or processing resources. Parsers and applications that utilize XML can be smaller and less processor intensive. As a subset of SGML, content that is stored in XML format is also valid SGML content. However, all SGML content is not necessarily valid XML content.
Thus, many markup languages have been developed (some of which are compatible with others, incompatible with others, limited in capabilities, etc.), and are in use within the Internet today. These markup languages allow devices and/or applications that support the markup language, to render content onto the device in a particular fashion. Other tools have also been developed to help control the rendering of content. Stylesheets is an example of one such tool. Stylesheets describe how a particular document (content) is to be presented on a screen, display, print, or otherwise. By attaching stylesheets to markup language structured documents (e.g. HTML) authors and readers can influence the presentation of the content without losing device independence.
The eXtensible Stylesheet Language (XSL) is a language for expressing stylesheets. One of the components of XSL is the XSL Transformations (XSLT) which is a language for transforming XML documents. A transformation expressed in XSLT is called a stylesheet because the transformation functions as a stylesheet—describes rules for transforming a source tree into a result tree. The stylesheet contains a set of template rules with each template rule having two parts: (1) a pattern which is matched against nodes in a source tree and (2) a template which can be utilized to form part of the result tree. The transformation is performed by associating patterns with templates. A pattern is matched against elements in the source tree. A template is instantiated to create part of the result tree. The result tree is separate from the source tree and, the structure of the result tree can be completely different from the structure of the source tree. In constructing the result tree, elements from the source tree can be filtered and reordered, and arbitrary structure can be added. In operation, the stylesheet declares what output should be produced when a pattern in the XML document is matched. Additional information about the operation of the XSLT can be obtained from the W3C or by visiting its website at the URL of http://www.w3.org.
Overall, the use of XSLT allows XML documents to be reformatted according to the parameters of XSL stylesheets, and presentation flexibility of the XML source can be obtained. This is an important function since it allows the separation of content from presentation—a key function for the extensibility and flexibility of the world wide web. Chris Lilley, a W3C staff contact for the XSL Working Group states that with XSLT “were closer to delivering rich, structured data content to a wider range of devices.” Thus, XSLT allows a variety of devices that support varying markup languages to access content that is in a standardized format—XML.
Although XSLT helps to provide content to a variety of devices, several problems are still present in the state of the art. One such problem is that the majority of web-based content is not formatted as XML documents but rather, as HTML documents. In addition, XML is not the easiest markup language to develop content with, thus, other, more user friendly languages are usually employed. Thus, to truly recognize the benefits of XSLT, there is a need for a mechanism to convert existing content into XML. However, to convert a majority of the content that is available on the web into XML would be a daunting task. In addition, even if such a task could be performed, it would result in crippling the content provider community since the majority of content creators, as well as the tools used to create content, is more HTML oriented rather than XML. Thus, there is a need in the art for a mechanism to convert content to XML, or some other interim format, when the content is being requested by a device. Such a mechanism would need to perform this task in a quick and efficient manner so as not to degrade the performance of accessing web content.
As previously stated, XML is a limited language that only uses a subset of the capabilities of SGML. Because of this, a transformation from one SGML format to XML and then from XML to another SGML format may result in the loss of some information. What is needed in the art is a mechanism to take content from one SGML format and translate it to another SGML format while minimizing the loss of any information. One technique to accomplish this would be to have a device or utility that directly transforms one SGML document into another SGML document. Such a technique would be a tremendous improvement in the world wide web. Another technique to accomplish this would be to have a device or utility that transforms content from a variety of formats, including but not limited to SGML, into an interim format, and coupling this device or utility with another device or utility that would transform content from the interim format to a device specific format.
Internet content may be accessed from an ever increasing number and variety of devices. Today, such devices include desktop computers, laptop computers, hand held personal data assistants (PDA), cellular telephones, appliances, electronic kiosks, GPS devices and many more. In the future it is quite certain that additional devices will be used in the same manner. Each such device may have different display capabilities and may utilize varying types of data interpreters. One device may use an SGML based web-browser, one device may use a WAP based browser and yet another device may use a non-markup language based interpreter. The above-described needs in the art are even more apparent when such a variety of devices are all attempting to access content from the world wide web.
However, in addition to needing the capability to transform content from one format to another, there is also a need in the art to determine what type of format and what additional format structuring is necessary in order to allow a device to render the content. When the transformations are being performed by a server-based environment rather than a client-based environment, the server must be able to identify the specific requirements of the destination of the content, and interject these specific requirements into the transformation process.
To illustrate the benefits that the present invention gives rise to, a need in the art regarding sever-based applications is provided. To utilize a server-based application, a client device connects to the server and initiates a download of the application. The server acknowledges the request and initializes the application for downloading (note that the application is also usually “compressed” for faster delivery over the Internet). The client device then downloads the compressed application “executable” from the server.
The application is now stored on the client, but is not yet ready for use. The application must first be unpacked or uncompressed, and then typically an installation routine that will make the application ready to run on the client must be invoked. Once this is done, the application can be invoked. Once invoked, the application runs resident in the client's memory. The application must be recalled from the hard drive of the client device, and executed each time it is desired to be used. In addition, the client likely has word processors, spreadsheets, and email editor programs, which must be recalled from its hard disk and made resident in its memory, to be executed. Each application consumes valuable resources of the client device. Thus, there exists a need in the art for a technique to minimize the expenditure of client resources when running server-based applications.
Another problem in the industry can be seen by examining software distribution techniques. Today, revisions or upgrades to application programs must be downloaded or shipped on a digital media (“shrink-wrapped”) for installation by end-users. These upgraded versions are expensive to distribute and support costs are also significantly increased. End-users will incur costs of shipping, media and packaging to install the application, and significant problems may occur during these updates (incompatibility with existing software or systems installed on the end-user computer). Thus, there is a need in the art for a method to provide updated software without incurring the current expenses.
Therefore, it has been shown that there is a need in the art for devices that require content in a particular format, to access content through the Internet, or any other local or global network, regardless of the format in which the content is stored. In addition, there is a need in the art for a mechanism to convert content to XML, or some other interim format, when the content is being requested by a device. Such a mechanism would need to perform this task in a quick and efficient manner so as not to degrade the performance of accessing web content. There is also a need in the art to determine what type of format and what additional format structuring in necessary in order to allow a device to render the content. Finally, there exists a need in the art for a technique to minimize the expenditure of client resources when running server-based applications and for a method to provide updated software without incurring the current expenses. The aforementioned needs in the art, as well as other needs are met by the various embodiments of the present invention that are described within this specification.